import re

def safe_eval(expression, allowed_functions=None):
    """
    安全执行表达式，仅支持基本运算和允许的函数。
    """
    # 定义安全环境
    safe_globals = {}
    if allowed_functions:
        safe_globals.update(allowed_functions)

    # 执行表达式
    return eval(expression, {"__builtins__": None}, safe_globals)

def render_template(template_string, allowed_functions=None):
    """
    渲染模板字符串，支持表达式计算。
    """
    # 使用正则表达式查找 {表达式}
    def evaluate_match(match):
        expression = match.group(1)  # 获取括号内的表达式
        try:
            # 安全计算表达式
            result = safe_eval(expression, allowed_functions)
            return str(result)  # 返回计算结果的字符串形式
        except Exception as e:
            return f"Error: {e}"  # 捕获错误并返回

    # 匹配 {表达式} 的正则
    pattern = r"\{\{([^{}]+)\}\}"

    # 替换模板中的表达式
    return re.sub(pattern, evaluate_match, template_string)


if __name__ == "__main__":
    # 允许的函数（如果需要支持更复杂的操作，可以扩展）
    allowed_functions = {
        "pow": pow,
        "max": max,
        "min": min,
        'maxcount': 100
    }

    # 渲染模板
    template = "数学计算：1+1 是{{1+1}}，2*3 是 {{2*3}}, 并且1/0 是 {{1/0}} 函数执行：{{max(1,2)}} 变量：{{maxcount}} 条件表达式：{{ 1 if 1 > 0 else 0 }} 中括号{ 1+1 }"
    result = render_template(template, allowed_functions)
    print(result)
